{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python_defaultSpec_1600782321354",
   "display_name": "Python 3.7.0 64-bit ('base': conda)"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "source": [
    "# 交通事故理赔审核\n",
    "## 本比赛为个人练习赛，适用于入门二元分类模型，主要针对于数据新人进行自我练习、自我提高，与大家切磋。\n",
    "\n",
    "任务类型：二元分类\n",
    "\n",
    "背景介绍:\n",
    "在交通摩擦（事故）发生后，理赔员会前往现场勘察、采集信息，这些信息往往影响着车主是否能够得到保险公司的理赔。训练集数据包括理赔人员在现场对该事故方采集的36条信息，信息已经被编码，以及该事故方最终是否获得理赔。我们的任务是根据这36条信息预测该事故方没有被理赔的概率。   \n",
    "\n",
    "数据文件（三个）：\n",
    "train.csv 训练集，文件大小 15.6mb  \n",
    "test.csv 预测集, 文件大小 6.1mb  \n",
    "sample_submit.csv 提交示例 文件大小 1.4mb  \n",
    "\n",
    "\n",
    "训练集中共有200000条样本，预测集中有80000条样本。"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [
    "### 变量说明：  \n",
    "\n",
    "|变量名| 解释  |  \n",
    "|  :----:  | :----:  |  \n",
    "|  CaseId  |  案例编号，没有实际意义  |  \n",
    "| Q1  | 理赔员现场勘察采集的信息，Q1代表第一个问题的信息。信息被编码成数字，数字的大小不代表真实的关系。 |  \n",
    "| Qk  | 同上，Qk代表第k个问题的信息。一共36个问题。 |    \n",
    "|Evaluation|表示最终审核结果。0表示授予理赔，1表示未通过理赔审核。在test.csv中，这是需要被预测的标签|"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取数据\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "train = pd.read_csv('./train.csv')\n",
    "validation = pd.read_csv('./test.csv')"
   ]
  },
  {
   "source": [
    "### test数据目前不在我们的关注范围内，现阶段只分析train数据，首先对train数据进行分割成训练集和测试集。\n",
    "### 对train数据进行观察与可视化"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "   CaseId  Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9     ...      Q28  Q29  Q30  Q31  \\\n0       1   0   0   0   0   0   0   0   0   0     ...        0    0    0    0   \n1       2   0   0   0   0   0   0   0   0   0     ...        0    1    1    1   \n2       3   0   0   0   0   0   0   0   1   0     ...        1    2    2    2   \n\n   Q32  Q33  Q34  Q35  Q36  Evaluation  \n0    0    0    0    0    0           0  \n1    1    0    0    0    0           0  \n2    1    0    0    0    0           0  \n\n[3 rows x 38 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>CaseId</th>\n      <th>Q1</th>\n      <th>Q2</th>\n      <th>Q3</th>\n      <th>Q4</th>\n      <th>Q5</th>\n      <th>Q6</th>\n      <th>Q7</th>\n      <th>Q8</th>\n      <th>Q9</th>\n      <th>...</th>\n      <th>Q28</th>\n      <th>Q29</th>\n      <th>Q30</th>\n      <th>Q31</th>\n      <th>Q32</th>\n      <th>Q33</th>\n      <th>Q34</th>\n      <th>Q35</th>\n      <th>Q36</th>\n      <th>Evaluation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n<p>3 rows × 38 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 2
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "source": [
    "#### 去除Caseid，提取Evaluation"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "   Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10     ...      Q28  Q29  Q30  Q31  \\\n0   0   0   0   0   0   0   0   0   0    0     ...        0    0    0    0   \n1   0   0   0   0   0   0   0   0   0    0     ...        0    1    1    1   \n2   0   0   0   0   0   0   0   1   0    0     ...        1    2    2    2   \n\n   Q32  Q33  Q34  Q35  Q36  Evaluation  \n0    0    0    0    0    0           0  \n1    1    0    0    0    0           0  \n2    1    0    0    0    0           0  \n\n[3 rows x 37 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Q1</th>\n      <th>Q2</th>\n      <th>Q3</th>\n      <th>Q4</th>\n      <th>Q5</th>\n      <th>Q6</th>\n      <th>Q7</th>\n      <th>Q8</th>\n      <th>Q9</th>\n      <th>Q10</th>\n      <th>...</th>\n      <th>Q28</th>\n      <th>Q29</th>\n      <th>Q30</th>\n      <th>Q31</th>\n      <th>Q32</th>\n      <th>Q33</th>\n      <th>Q34</th>\n      <th>Q35</th>\n      <th>Q36</th>\n      <th>Evaluation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n<p>3 rows × 37 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 3
    }
   ],
   "source": [
    "train = train.drop(columns='CaseId')\n",
    "train.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "   Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10 ...   Q27  Q28  Q29  Q30  Q31  Q32  \\\n0   0   0   0   0   0   0   0   0   0    0 ...     0    0    0    0    0    0   \n1   0   0   0   0   0   0   0   0   0    0 ...     0    0    1    1    1    1   \n2   0   0   0   0   0   0   0   1   0    0 ...     0    1    2    2    2    1   \n\n   Q33  Q34  Q35  Q36  \n0    0    0    0    0  \n1    0    0    0    0  \n2    0    0    0    0  \n\n[3 rows x 36 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Q1</th>\n      <th>Q2</th>\n      <th>Q3</th>\n      <th>Q4</th>\n      <th>Q5</th>\n      <th>Q6</th>\n      <th>Q7</th>\n      <th>Q8</th>\n      <th>Q9</th>\n      <th>Q10</th>\n      <th>...</th>\n      <th>Q27</th>\n      <th>Q28</th>\n      <th>Q29</th>\n      <th>Q30</th>\n      <th>Q31</th>\n      <th>Q32</th>\n      <th>Q33</th>\n      <th>Q34</th>\n      <th>Q35</th>\n      <th>Q36</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n<p>3 rows × 36 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 4
    }
   ],
   "source": [
    "y = train['Evaluation']\n",
    "x = train.drop(columns='Evaluation')\n",
    "x[:3]"
   ]
  },
  {
   "source": [
    "### 统计各列分布"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "                  Q1             Q2             Q3             Q4  \\\ncount  200000.000000  200000.000000  200000.000000  200000.000000   \nmean        0.016445       0.010875       0.024925       0.038560   \nstd         0.182496       0.141269       0.213645       0.263483   \nmin         0.000000       0.000000       0.000000       0.000000   \n25%         0.000000       0.000000       0.000000       0.000000   \n50%         0.000000       0.000000       0.000000       0.000000   \n75%         0.000000       0.000000       0.000000       0.000000   \nmax         3.000000       3.000000       3.000000       3.000000   \n\n                  Q5             Q6             Q7             Q8  \\\ncount  200000.000000  200000.000000  200000.000000  200000.000000   \nmean        0.039130       0.080335       0.113725       0.294165   \nstd         0.301528       0.508923       0.589884       0.916137   \nmin         0.000000       0.000000       0.000000       0.000000   \n25%         0.000000       0.000000       0.000000       0.000000   \n50%         0.000000       0.000000       0.000000       0.000000   \n75%         0.000000       0.000000       0.000000       0.000000   \nmax         3.000000       6.000000       6.000000       8.000000   \n\n                  Q9            Q10      ...                  Q27  \\\ncount  200000.000000  200000.000000      ...        200000.000000   \nmean        0.038810       0.192490      ...             0.000820   \nstd         0.267851       0.681946      ...             0.083901   \nmin         0.000000       0.000000      ...             0.000000   \n25%         0.000000       0.000000      ...             0.000000   \n50%         0.000000       0.000000      ...             0.000000   \n75%         0.000000       0.000000      ...             0.000000   \nmax         4.000000       5.000000      ...            14.000000   \n\n                 Q28            Q29            Q30            Q31  \\\ncount  200000.000000  200000.000000  200000.000000  200000.000000   \nmean        0.611760       4.034760       1.163025       9.428990   \nstd         0.984868       3.815101       0.616417       9.004402   \nmin         0.000000       0.000000       0.000000       0.000000   \n25%         0.000000       2.000000       1.000000       2.000000   \n50%         0.000000       3.000000       1.000000       6.000000   \n75%         1.000000       5.000000       1.000000      14.000000   \nmax         4.000000      52.000000       3.000000      42.000000   \n\n                 Q32            Q33            Q34           Q35  \\\ncount  200000.000000  200000.000000  200000.000000  200000.00000   \nmean        0.979740       0.032945       0.005520       0.64946   \nstd         0.238725       0.802953       0.074092       0.47714   \nmin         0.000000       0.000000       0.000000       0.00000   \n25%         1.000000       0.000000       0.000000       0.00000   \n50%         1.000000       0.000000       0.000000       1.00000   \n75%         1.000000       0.000000       0.000000       1.00000   \nmax         3.000000      38.000000       1.000000       1.00000   \n\n                 Q36  \ncount  200000.000000  \nmean        0.657345  \nstd         0.474598  \nmin         0.000000  \n25%         0.000000  \n50%         1.000000  \n75%         1.000000  \nmax         1.000000  \n\n[8 rows x 36 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Q1</th>\n      <th>Q2</th>\n      <th>Q3</th>\n      <th>Q4</th>\n      <th>Q5</th>\n      <th>Q6</th>\n      <th>Q7</th>\n      <th>Q8</th>\n      <th>Q9</th>\n      <th>Q10</th>\n      <th>...</th>\n      <th>Q27</th>\n      <th>Q28</th>\n      <th>Q29</th>\n      <th>Q30</th>\n      <th>Q31</th>\n      <th>Q32</th>\n      <th>Q33</th>\n      <th>Q34</th>\n      <th>Q35</th>\n      <th>Q36</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>...</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.000000</td>\n      <td>200000.00000</td>\n      <td>200000.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>0.016445</td>\n      <td>0.010875</td>\n      <td>0.024925</td>\n      <td>0.038560</td>\n      <td>0.039130</td>\n      <td>0.080335</td>\n      <td>0.113725</td>\n      <td>0.294165</td>\n      <td>0.038810</td>\n      <td>0.192490</td>\n      <td>...</td>\n      <td>0.000820</td>\n      <td>0.611760</td>\n      <td>4.034760</td>\n      <td>1.163025</td>\n      <td>9.428990</td>\n      <td>0.979740</td>\n      <td>0.032945</td>\n      <td>0.005520</td>\n      <td>0.64946</td>\n      <td>0.657345</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>0.182496</td>\n      <td>0.141269</td>\n      <td>0.213645</td>\n      <td>0.263483</td>\n      <td>0.301528</td>\n      <td>0.508923</td>\n      <td>0.589884</td>\n      <td>0.916137</td>\n      <td>0.267851</td>\n      <td>0.681946</td>\n      <td>...</td>\n      <td>0.083901</td>\n      <td>0.984868</td>\n      <td>3.815101</td>\n      <td>0.616417</td>\n      <td>9.004402</td>\n      <td>0.238725</td>\n      <td>0.802953</td>\n      <td>0.074092</td>\n      <td>0.47714</td>\n      <td>0.474598</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>...</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.00000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>...</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>2.000000</td>\n      <td>1.000000</td>\n      <td>2.000000</td>\n      <td>1.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.00000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>...</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>3.000000</td>\n      <td>1.000000</td>\n      <td>6.000000</td>\n      <td>1.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>1.00000</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>...</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>5.000000</td>\n      <td>1.000000</td>\n      <td>14.000000</td>\n      <td>1.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>1.00000</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>3.000000</td>\n      <td>3.000000</td>\n      <td>3.000000</td>\n      <td>3.000000</td>\n      <td>3.000000</td>\n      <td>6.000000</td>\n      <td>6.000000</td>\n      <td>8.000000</td>\n      <td>4.000000</td>\n      <td>5.000000</td>\n      <td>...</td>\n      <td>14.000000</td>\n      <td>4.000000</td>\n      <td>52.000000</td>\n      <td>3.000000</td>\n      <td>42.000000</td>\n      <td>3.000000</td>\n      <td>38.000000</td>\n      <td>1.000000</td>\n      <td>1.00000</td>\n      <td>1.000000</td>\n    </tr>\n  </tbody>\n</table>\n<p>8 rows × 36 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "source": [
    "x.describe()\n",
    "# 我们发现每一列不是0和1的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "0    197959\n1      1258\n3       465\n2       318\nName: Q1, dtype: int64"
     },
     "metadata": {},
     "execution_count": 6
    }
   ],
   "source": [
    "x.Q1.value_counts() # 统计Q1列的频数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "output_type": "error",
     "ename": "NameError",
     "evalue": "name 'x_train' is not defined",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-7-d21122ced26f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m     \u001b[1;31m# print(i)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m     \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_train\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# 得到所有列的值频数\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'x_train' is not defined"
     ]
    }
   ],
   "source": [
    "for i in x.columns:\n",
    "    # print(i)\n",
    "    print(x_train[i].value_counts()) # 得到所有列的值频数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "0    168399\n1     31601\nName: Evaluation, dtype: int64"
     },
     "metadata": {},
     "execution_count": 8
    }
   ],
   "source": [
    "y.value_counts()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [],
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# 主成分分析，降维"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([-8.34213622e-05,  3.28203884e-03,  2.76089533e-03,  2.05458466e-03,\n        6.68098879e-03,  1.08955821e-02,  3.39455306e-03, -2.60856999e-02,\n        1.57331906e-03, -7.91906683e-03,  1.33847013e-03,  2.97658708e-03,\n        7.03660902e-04,  8.03645393e-04, -1.47521359e-03,  5.85441656e-03,\n        2.93816616e-04,  6.60784314e-03, -1.14412668e-03,  1.27225555e-04,\n       -1.14925454e-03,  1.81410244e-03, -2.81584490e-02, -4.65446779e-03,\n       -9.46188854e-03, -2.51881708e-05, -1.49983814e-05,  2.87466221e-04,\n        1.88696968e-04,  1.79892220e-03,  9.99023916e-01,  1.62302543e-04,\n       -5.83822767e-04,  5.84731693e-05,  1.52413550e-03,  4.46929239e-05])"
     },
     "metadata": {},
     "execution_count": 9
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "pca = PCA(n_components=2) # 实例化一个pca\n",
    "x2d = pca.fit_transform(x) # 应用到数据集,得到一个2维数据\n",
    "pca.components_.T[:,0] # 查看第一个主成分向量矩阵"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "source": [
    "print(pca.explained_variance_ratio_) # 查看其中成分的贡献度"
   ],
   "cell_type": "code",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    },
    "tags": []
   },
   "execution_count": 10,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "[0.71907012 0.13048653]\n"
    }
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "plt.scatter(x2d[:,0],x2d[:,1], c=y, marker=\"o\", cmap=\"bwr_r\")\n",
    "plt.show() # 从结果看，pca无法把两类分开"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### 因为该数据全部是因子类型，因此需要制作哑变量"
   ]
  },
  {
   "source": [
    "x.info()\n",
    "# get_dummies()能够自动转化object属性和category属性的列，int64的不会自动转换\n",
    "# get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)\n",
    "#     Convert categorical variable into dummy/indicator variables\n",
    "    \n",
    "#     Parameters\n",
    "#     ----------\n",
    "#     data : array-like, Series, or DataFrame\n",
    "#     prefix : string, list of strings, or dict of strings, default None\n",
    "#         String to append DataFrame column names.\n",
    "#         Pass a list with length equal to the number of columns\n",
    "#         when calling get_dummies on a DataFrame. Alternatively, `prefix`\n",
    "#         can be a dictionary mapping column names to prefixes.\n",
    "#     columns : list-like, default None\n",
    "#         Column names in the DataFrame to be encoded.\n",
    "#         If `columns` is None then all the columns with\n",
    "#         `object` or `category` dtype will be converted."
   ],
   "cell_type": "code",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    },
    "tags": []
   },
   "execution_count": 12,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 200000 entries, 0 to 199999\nData columns (total 36 columns):\nQ1     200000 non-null int64\nQ2     200000 non-null int64\nQ3     200000 non-null int64\nQ4     200000 non-null int64\nQ5     200000 non-null int64\nQ6     200000 non-null int64\nQ7     200000 non-null int64\nQ8     200000 non-null int64\nQ9     200000 non-null int64\nQ10    200000 non-null int64\nQ11    200000 non-null int64\nQ12    200000 non-null int64\nQ13    200000 non-null int64\nQ14    200000 non-null int64\nQ15    200000 non-null int64\nQ16    200000 non-null int64\nQ17    200000 non-null int64\nQ18    200000 non-null int64\nQ19    200000 non-null int64\nQ20    200000 non-null int64\nQ21    200000 non-null int64\nQ22    200000 non-null int64\nQ23    200000 non-null int64\nQ24    200000 non-null int64\nQ25    200000 non-null int64\nQ26    200000 non-null int64\nQ27    200000 non-null int64\nQ28    200000 non-null int64\nQ29    200000 non-null int64\nQ30    200000 non-null int64\nQ31    200000 non-null int64\nQ32    200000 non-null int64\nQ33    200000 non-null int64\nQ34    200000 non-null int64\nQ35    200000 non-null int64\nQ36    200000 non-null int64\ndtypes: int64(36)\nmemory usage: 54.9 MB\n"
    }
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "   Q1_0  Q1_1  Q1_2  Q1_3  Q2_0  Q2_1  Q2_2  Q2_3  Q3_0  Q3_1  ...    Q33_35  \\\n0     1     0     0     0     1     0     0     0     1     0  ...         0   \n1     1     0     0     0     1     0     0     0     1     0  ...         0   \n2     1     0     0     0     1     0     0     0     1     0  ...         0   \n\n   Q33_36  Q33_37  Q33_38  Q34_0  Q34_1  Q35_0  Q35_1  Q36_0  Q36_1  \n0       0       0       0      1      0      1      0      1      0  \n1       0       0       0      1      0      1      0      1      0  \n2       0       0       0      1      0      1      0      1      0  \n\n[3 rows x 360 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Q1_0</th>\n      <th>Q1_1</th>\n      <th>Q1_2</th>\n      <th>Q1_3</th>\n      <th>Q2_0</th>\n      <th>Q2_1</th>\n      <th>Q2_2</th>\n      <th>Q2_3</th>\n      <th>Q3_0</th>\n      <th>Q3_1</th>\n      <th>...</th>\n      <th>Q33_35</th>\n      <th>Q33_36</th>\n      <th>Q33_37</th>\n      <th>Q33_38</th>\n      <th>Q34_0</th>\n      <th>Q34_1</th>\n      <th>Q35_0</th>\n      <th>Q35_1</th>\n      <th>Q36_0</th>\n      <th>Q36_1</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n<p>3 rows × 360 columns</p>\n</div>"
     },
     "metadata": {},
     "execution_count": 13
    }
   ],
   "source": [
    "dump_x = pd.get_dummies(x,prefix = x.columns,columns = x.columns)\n",
    "dump_x[:3] # 全部转化为哑变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "# help(train_test_split)\n",
    "x_train, x_test, y_train, y_test = train_test_split(x , y, test_size = 0.2 , random_state = 1)"
   ]
  },
  {
   "source": [
    "# Sklearn线性模型拟合"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
     },
     "metadata": {},
     "execution_count": 15
    }
   ],
   "source": [
    "from sklearn import linear_model\n",
    "reg = linear_model.LinearRegression() # 实例化\n",
    "reg.fit(x_train,y_train) # fit()数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([-3.20960192e-02, -5.70398909e-02, -4.46830827e-02,  9.08015889e-03,\n       -6.10284127e-02, -1.73754473e-02, -3.15323247e-03,  2.50799588e-03,\n       -2.81169139e-02, -3.75583127e-03, -2.06183367e-02,  5.81391467e-02,\n        6.69586076e-02, -1.52695276e-02, -4.69660500e-02, -2.44144608e-02,\n       -2.73300792e-02, -2.63637311e-02,  2.37616310e-02,  2.30084013e-01,\n       -4.28178721e-02, -3.23759293e-02,  2.22146188e-04, -6.01023289e-03,\n       -4.28785575e-03, -6.05547383e-02,  1.88375099e-02,  1.13528169e-01,\n       -1.45845048e-02,  1.26576423e-01,  1.18459941e-03, -6.44201619e-02,\n        2.51239941e-02,  8.47772622e-01, -3.34238794e-01,  5.56547772e-01])"
     },
     "metadata": {},
     "execution_count": 16
    }
   ],
   "source": [
    "reg.coef_"
   ]
  },
  {
   "source": [
    "# 计算误差"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = reg.predict(x_test)"
   ]
  }
 ]
}